// package emu.grasscutter.server.packet.recv;
//
// import emu.grasscutter.database.DatabaseHelper;
// import emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler;
// import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
// import emu.grasscutter.game.activity.musicgame.MusicGamePlayerData;
// import emu.grasscutter.game.props.ActivityType;
// import emu.grasscutter.net.packet.Opcodes;
// import emu.grasscutter.net.packet.PacketHandler;
// import emu.grasscutter.net.packet.PacketOpcodes;
// import emu.grasscutter.net.proto.MusicGameCreateBeatmapReqOuterClass;
// import emu.grasscutter.server.game.GameSession;
// import emu.grasscutter.server.packet.send.PacketActivityInfoNotify;
// import emu.grasscutter.server.packet.send.PacketMusicGameCreateBeatmapRsp;
// import emu.grasscutter.utils.Utils;
//
// import java.util.Objects;
//
// @Opcodes(PacketOpcodes.MusicGameCreateBeatmapReq)
// public class HandlerMusicGameCreateBeatmapReq extends PacketHandler {
//
//	@Override
//	public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
//		var req = MusicGameCreateBeatmapReqOuterClass.MusicGameCreateBeatmapReq.parseFrom(payload);
//
//        var musicGameBeatmap = MusicGameBeatmap.of()
//            .musicId(req.getMusicBriefInfo().getMusicId())
//            .musicNoteCount(req.getMusicBriefInfo().getMusicNoteCount())
//            .savePosition(req.getMusicBriefInfo().getPosition())
//            .maxScore(req.getMusicBriefInfo().getMaxScore())
//            .authorUid(session.getPlayer().getUid())
//            .beatmap(MusicGameBeatmap.parse(req.getMusicRecord().getBeatmapItemListList()))
//            .createTime(Utils.getCurrentSeconds())
//            .build();
//
//        musicGameBeatmap.save();
//
//        var playerData =
// session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME);
//        if(playerData.isEmpty()){
//            return;
//        }
//
//        var handler = (MusicGameActivityHandler) playerData.get().getActivityHandler();
//        var musicGamePlayerData = handler.getMusicGamePlayerData(playerData.get());
//
//        var oldBeatmap = musicGamePlayerData.getPersonalCustomBeatmapRecord().values().stream()
//            .map(MusicGamePlayerData.CustomBeatmapRecord::getMusicShareId)
//            .map(DatabaseHelper::getMusicGameBeatmap)
//            .filter(Objects::nonNull)
//            .filter(item -> item.getAuthorUid() == session.getPlayer().getUid())
//            .filter(item -> item.getMusicId() == req.getMusicBriefInfo().getMusicId())
//            .filter(item -> item.getSavePosition() == req.getMusicBriefInfo().getPosition())
//            .findFirst();
//
//        // delete old beatmap for player
//        // the old beatmap is still in database so that others can still play.
//        oldBeatmap.ifPresent(i -> handler.removePersonalBeatmap(playerData.get(), i));
//
//        // link this beatmap to player's personal data
//        handler.addPersonalBeatmap(playerData.get(), musicGameBeatmap);
//
//        session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get())));
//        session.send(new PacketMusicGameCreateBeatmapRsp(musicGameBeatmap.getMusicShareId(),
// req.getUnknownEnum1()));
//	}
//
// }
